﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace TestImport.Model.DatabaseRepositories
{
    public abstract partial class DatabaseRepository
    {
        /********************/
        /* RekeningLeerling */
        /********************/

        public DataTable RekeningLeerling_GetData()
        {
            return defaultExecuteReaderDataTable(CommandType.Text, "SELECT rekeningID, datumRekening, totaal, opmerking, voorschot, betaald, leerlingID, naam, adminCode, straat, gemeente, groepCode FROM RekeningLeerling");
        }

        public DataTable RekeningLeerling_GetDataByGroepCode(int groepCode)
        {
            DataTable dt = new DataTable();
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(1);
                dbManager.AddParameters(0, "@groepCode", groepCode);
                dbManager.ExecuteReader(CommandType.Text, "SELECT rekeningID, datumRekening, totaal, opmerking, voorschot, betaald, leerlingID, naam, adminCode, straat, gemeente, groepCode FROM RekeningLeerling WHERE (groepCode = @groepCode) ORDER BY  naam, leerlingID");
                dt.Load(dbManager.DataReader);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
            return dt;
        }

        public DataTable RekeningLeerling_GetDataByLeerlingID(int leerlingID)
        {
            DataTable dt = new DataTable();
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(1);
                dbManager.AddParameters(0, "@leerlingID", leerlingID);
                dbManager.ExecuteReader(CommandType.Text, "SELECT rekeningID, datumRekening, totaal, opmerking, voorschot, betaald, leerlingID, naam, adminCode, straat, gemeente, groepCode FROM RekeningLeerling WHERE leerlingID = @leerlingID");
                dt.Load(dbManager.DataReader);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
            return dt;
        }

        public DataTable RekeningLeerling_GetDataByRekeningID(int rekeningID)
        {
            DataTable dt = new DataTable();
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(1);
                dbManager.AddParameters(0, "@rekeningID", rekeningID);
                dbManager.ExecuteReader(CommandType.Text, "SELECT rekeningID, datumRekening, totaal, opmerking, voorschot, betaald, leerlingID, naam, adminCode, straat, gemeente, groepCode FROM RekeningLeerling WHERE rekeningID = @rekeningID");
                dt.Load(dbManager.DataReader);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
            return dt;
        }

        public DataTable RekeningLeerling_GetDataNietBetaaldByLeerlingID(int leerlingID)
        {
            DataTable dt = new DataTable();
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(1);
                dbManager.AddParameters(0, "@leerlingID", leerlingID);
                dbManager.ExecuteReader(CommandType.Text, "SELECT rekeningID, datumRekening, totaal, opmerking, voorschot, betaald, leerlingID, naam, adminCode, straat, gemeente, groepCode FROM RekeningLeerling WHERE (leerlingID = @leerlingID) AND (betaald <> totaal)");
                dt.Load(dbManager.DataReader);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
            return dt;
        }

        public DataTable RekeningLeerling_GetDataBySortOpGroep()
        {
            return defaultExecuteReaderDataTable(CommandType.Text, "SELECT rekeningID, datumRekening, totaal, opmerking, voorschot, betaald, leerlingID, naam, adminCode, straat, gemeente, groepCode FROM RekeningLeerling ORDER BY groepCode, naam, leerlingID");
        }

        public void RekeningLeerling_UpdateBetaaldBedrag(int betaald, int rekeningID)
        {
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(2);
                dbManager.AddParameters(0, "@betaald", betaald);
                dbManager.AddParameters(1, "@rekeningID", rekeningID);
                dbManager.ExecuteNonQuery(CommandType.Text, "UPDATE Rekening SET betaald = @betaald WHERE (rekeningID = @rekeningID)");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
        }

        public void RekeningLeerling_UpdateFactuurBedrag(int totaal, int rekeningID)
        {
            try
            {
                dbManager.Open();
                dbManager.CreateParameters(2);
                dbManager.AddParameters(0, "@totaal", totaal);
                dbManager.AddParameters(1, "@rekeningID", rekeningID);
                dbManager.ExecuteNonQuery(CommandType.Text, "UPDATE Rekening SET totaal = @totaal WHERE (rekeningID = @rekeningID)");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            finally
            {
                dbManager.Dispose();
            }
        }

    }
}
